/*******************************************************************************

                           TMenu 字符串编辑选择DEMO

*******************************************************************************/
#include "TMenu_EditString.h"
#include "TMenuBuf.h" //使用缓冲过渡避免直接操作
#include <string.h>

#ifndef LV_LOG_USER //TGUI模式且未重定向时
  #define LV_LOG_USER(...) do {}while(0)
#endif

#ifdef TMENU_TEST_ALL    //集中测试时
  extern const TMenu_t TMenu_EditSelTop;      //编辑选择作为总菜单
  #define  _PARENT_MENU  &TMenu_EditSelTop   //父菜单
#else
  #define _PARENT_MENU  NULL   //本层即为总菜单
#endif

char DemoEditString[16 + 1] = "default 名称";

/*******************************************************************************
                              本层总菜单实现
*******************************************************************************/
//----------------------------回调函数实现--------------------------------------
static void _Notify(unsigned char Type, void *pv)
{
  struct _EditStringUser *pUser = (struct _EditStringUser *)pv;
  switch(Type){
  case TM_NOTIFY_GET_DATA: //将当前值装入
    strcpy(TMenuBuf.Str, DemoEditString);
    pUser->pString = TMenuBuf.Str;
    pUser->Size = 16 + 1;
    pUser->DefaultType = 0; //默认拼音输入法
    pUser->TypeMask = 0xff; //可使用全部输入法类型
    break;
  case TM_NOTIFY_SET_DATA: //项被改变了
    strcpy(DemoEditString, pUser->pString);
    break;
  default:break;
  }
}

//定制符号测试！
static const char _UserSign[] = {\
  " I2C ！ ＠ 【 】 《 》 ～ ？ ； 。 ，" //I2C为连续符号测试！
};

//---------------------------------菜单结构----------------------------------
const TMenu_t TMenu_EditStringTop = {//菜单结构
  TMTYPE_EDITSTRING,           //菜单类型为字符编辑模式
  0,                          //项大小这里不使用，定义为0即可
  "Demo EditString",          //菜单头,为NULL时从回调里读取
  _PARENT_MENU,               //自已的父菜单
  _UserSign,                  //用于存放挂接的符号表，NULL默认，具本见TImeMng定义
  _Notify,                    //与用户空间交互的通报函数
};
